package com.one.util;

import com.one.constant.DBStatusConstant;
import com.one.constant.SystemConstant;
import org.springframework.util.StringUtils;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * @ClassName: DatabasePropertiesUtil
 * @Auther: yph
 * @Date: 2022/1/14 14:32
 * @Description: 数据库中对需要转换的字段进行解析
 */
public class DatabasePropertiesUtil {

    /**
     * @Author: yph
     * @Date: 2022/1/14 14:33
     * @return:
     * @Description: 将String类型转换为list类型
     * 数据库中 "abc;abc;abc" 转换为["abc","abc","abc"]
     */
    public static List<String> stringToList(String source) {
        List<String> target = new ArrayList<>();
        // 判断传入的值是否为 null
        if (StringUtils.isEmpty(source)) {
            // 为空时，直接返回
            return null;
        }
        // 如果不为空就进行解析  数据库中数据用 ';' 分割
        target.addAll(Arrays.asList(source.split(";")));
        return target;
    }

    /**
     * @Author: yph
     * @Date: 2022/1/14 15:01
     * @return:
     * @Description: 将list转换为map  要求 list中数据为 ["key:value"]
     * <p>
     * source 带解析的字符串列表
     */
    public static Map<String, String> listToMap(List<String> source) {
        // 定义一个map<String,String> 对象 用户返回
        Map<String, String> target = new HashMap<>();
        if (source == null || source.size() <= SystemConstant.ZERO_CODE) {
            // 如果source 为空 就返回空
            return null;
        }
        target = source.stream()
                // 过滤 对于没有字段中没有 : 的字符串进行过滤
                .filter(sourceStr -> sourceStr.indexOf(":") > SystemConstant.ZERO_CODE)
                // 对数据进行收集
                .collect(Collectors
                        .toMap(
                                key -> key.substring(0, key.indexOf(":")),
                                value -> value.substring(value.indexOf(":") + 1, value.length() - 1)
                        ));
        return target;
    }

}
